Reconfigurable devices are well known and generally include volatile reprogrammable configuration memory that may be programmed and used to configure the reconfigurable device. For example, an SRAM-based FPGA may be reconfigured to execute a user-implemented design. Such devices generally require a configuration file to be loaded into configuration memory after power up, which may be used to activate the user-implemented design. Reconfigurable devices may have a fine-grained architecture, such as FPGAs, or a coarse-grained architecture such as a reconfigurable datapath arrays (rDPAs). If in a hardware architecture both functionalities of processing elements and interconnections between them can be modified after fabrication, then a device is considered to be a reconfigurable device or architecture. Whether to implement one or more functionalities of a device as hardware, such as through reconfiguring interconnections between different elements, or as software, such as through programming of device functionalities, depends upon a particular device and the application in which the device is to be used. Implementing functionality as hardware may provide for faster execution of various functionalities, but may entail a more complex design process. Implementing functionality as software may consume more CPU cycles during execution of the functionality thereby slowing the execution of the functionality, but may provide more flexibility.
In many reconfigurable devices, a user may select particular functionality that may be implemented as hardware and other particular functionality that may be implemented using software. One difference of reconfigurable devices when compared to using ordinary microprocessors is the ability to make substantial changes to the datapath itself in addition to the control flow. One difference between reconfigurable devices and custom hardware (e.g., application-specific integrated circuits (ASICs)) is the possibility to adapt the hardware during runtime by loading a new circuit on the reconfigurable fabric of the reconfigurable device.
Once a reconfigurable device is programmed and is operating, a reconfigurable device may be prone to upsets which may corrupt the functional performance of the reconfigurable device. For example, radiation effects on electronics systems in a space environment, such as electronics systems in satellites, may induce one or more types of errors in electronic components. Single event type errors may occur at any point in the mission duration. Such radiation effects include single event upset (SEU), single event functional interrupt (SEFI), single event transient (SET) errors, and multiple bit upset (MBU). SEU, MBU, SEFI and SET generally require mitigation at the system level. Some classes of these errors may require ground intervention. In any event, high reliability systems to be used in such applications may be required to continue operation after such events with little or no external intervention.